package accidence;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import java.util.Scanner;

/**
 * 截取字符串
 *
 * @author sdm
 * @version 1.0
 * @date 2023/3/19 8:36
 */
@RunWith(JUnit4.class) //就是指用JUnit4来运行
public class HJ46 {

    /**
     * hasNext()与hasNextLine()的区别？  http://t.csdn.cn/9brmI
     *      1、hasNext()方法会判断接下来是否有非空字符.如果有,则返回true,否则返回false
     *      2、hasNextLine() 方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回true,否则返回false
     *
     *
     * java如何在输入空时让scanner类自动结束?
     *      public static  void main(String[] args){
     *          Scanner sc = new Scanner(System.in);
     *
     *           while (sc.hasNextLine()){
     *               String str = sc.nextLine();
     *               if(str.isEmpty()){
     *                   break;
     *               }
     *               System.out.println(str);
     *            }
     *       }
     *
     *
     *  BufferedReader与Scanner的区别?  http://t.csdn.cn/aMtZS
     *      Scanner,位于java.util包
     *      用法为 Scanner in = new Scanner(System.in);
     *      通过new创建一个Scanner对象，Scanner需要传入一个System.in作为参数，这个我们可以看作是Scanner通过其内部机制将System.in包装起来而实现数据的读取工作的。
     *      Scanner对象通过一系列的in.nextXxx();方法来读取相应的基本类型的数据，通过in.hasNextXxx();方法来判断是否还有下一个数据。
     *      Scanner读取数据是按空格符，这其中包括空格键，Tab键，Enter键。
     *
     *      问题：当我们的输入数据中有空格时，我们就不会得到我们想要的数据，这样我们就要考虑到BufferReader来读取数据
     *
     *      BufferReader，位于java.io
     *      用法为 BufferReader br = new BufferReader(new InputStreamReader(System.in));
     *      BufferReader对象通过readLine();方法来读取数据，readLine()是按Enter回车来读取一行数据的，只要在回车键之前的都会被readLine();方法返回
     *      然而，要使用BufferReader输入一些字符之外的类型的数据，就要相对比较麻烦，需要通过一些XXXX.parseXxx()；来转换相应的数据类型，
     *     （int类型的用Integer.parseInt（需要转换的字符串））虽然，麻烦一些，但通过在一些OJ系统上的和Scanner作对比，BufferReader的效率要比Scanner高一倍，
     *      这个差距可想而知，读取的数据越多，效果就越明显。
     *
     */


    @Test
    public void MyHJ46(){
        Scanner in = new Scanner(System.in);

        while (in.hasNextLine()) {
            String a = in.nextLine();
            int b = Integer.parseInt(in.nextLine());


            if(a.length()>0 && a.length()<1001 && b>0 && b<a.length()){
                System.out.println(a.subSequence(0,b));  // 截取范围 [0，n)
//                System.out.println(a.substring(0,b));    // 截取范围 [0，n)
            }else{
                System.out.println("入参数据范围异常！");
            }
        }
    }

    @Test
    public void HJ461(){
        Scanner scanner = new Scanner(System.in);
        String outStr="";
        while (scanner.hasNext()){
            //获取输入的字符串
            String str=scanner.nextLine();
            //获取需要截取的长度
            int k= scanner.nextInt();
            char[] chars=str.toCharArray();
            for (int i=0;i<=k-1;i++){
                outStr +=chars[i];
            }
        }
        System.out.println(outStr);
    }
}
